package com.fintech.third.service.credit;

import java.util.List;
import java.util.Map;

import com.fintech.third.model.credit.BRDeviceInfo;
import com.fintech.third.model.credit.CallCountFilterDto;
import com.fintech.third.model.credit.CreditReportMessageDto;
import com.fintech.third.model.credit.CreditReportPortrait;
import com.fintech.third.model.credit.EdcDeviceDto;
import com.fintech.third.model.credit.MxAlipayAddressDto;
import com.fintech.third.model.credit.MxAlipayBankDto;
import com.fintech.third.model.credit.MxAlipayUserInfoDto;
import com.fintech.third.model.credit.MxOperatorReportDto;
import com.fintech.third.model.credit.PieChartDto;
import com.fintech.third.model.credit.YDDeviceLinkDto;
import com.fintech.third.model.credit.YDLendBehaviorDto;
import com.fintech.third.model.credit.YDUserInfoDto;
import com.fintech.third.model.moxie.carriesv2.MXCheckSearchInfo;
import com.fintech.third.model.moxie.dataprovide.IntMxAccountBaseInfo;
import com.fintech.third.model.shzx.EdcZxPersonalNewCredit;

/**
 * 征信报告
 * @author wanggang
 *
 */
public interface CreditReportService {

	/**
	 * 获取用户运营商概要
	 * wanggang
	 * @return
	 */
	IntMxAccountBaseInfo getUserOperatorSummary(String loanId);
	
	/**
	 * 根据通话地统计各通话地所占百分比
	 * wanggang
	 * @param loanId
	 * @return
	 */
	List<PieChartDto> selectCallLocationPercent(String loanId);
	
	/**
	 * 根据通话类型统计各通话地所占百分比
	 * wanggang
	 * @param loanId
	 * @return
	 */
	List<PieChartDto> selectCallTypePercent(String loanId);
	
	/**
	 * 通话次数筛选(按照月份)
	 * wanggang
	 * @param loanId
	 * @return
	 */
	public CallCountFilterDto getCallCount(String loanId);
	
	/**
	 * 通话次数筛选(按照天)
	 * wanggang
	 * @param loanId
	 * @return
	 */
	public CallCountFilterDto getCallCountWithMonth(String loanId,String month);
	
	CallCountFilterDto getStrangerNumberStatistics(String loanId,String userId);
    
	CallCountFilterDto getCallPeriodStatistics(String loanId);
    
	CallCountFilterDto getCallPeriodStatisticsWithMonth(String loanId,String month);
	
	CreditReportMessageDto queryCallCountList(Map<String,Object> map);
	
	CreditReportMessageDto queryCallCountListWithMonth(Map<String,Object> map);
	
	CreditReportMessageDto getCallDetailList(Map<String,Object> map);
	
	CreditReportMessageDto getAddressBookList(Map<String,Object> map);
	
	MxAlipayUserInfoDto getMxAlipayUserInfo(String loanId);
	
	List<MxAlipayBankDto> getMxAlipayBankList(String loanId);
	
	List<MxAlipayAddressDto> getMxAlipayAddressList(String loanId);

	/**
	 * 
	* @Title: getAutoDecisionData 
	* @Description:拉取自动审核数据  
	* @param loanId
	* @param userId
	* @return       
	* @author 李瑶
	* @date 2018年10月13日 上午10:54:59
	 */
	public Map<String, Object> getAutoDecisionData(String loanId,String orgLoanId, String userId, String mobileNo);
	
	/**
	 * 
	* @Title: getRiskData 
	* @Description:获取风险数据  
	* @param loanId
	* @param userId
	* @return       
	* @author 李瑶
	* @date 2018年10月22日 上午10:47:34
	 */
	public Map<String, Object> getRiskData(String currentLoanId,String hisLoanId,String userId);
	
	public CreditReportMessageDto getZXApplyInfo(Map<String, Object> map);
	
	CreditReportPortrait getZXBasicInfo(String cardNo);
	
	public CreditReportMessageDto getZXOrderInfo(Map<String, Object> map);
	
	public CreditReportMessageDto getZXOrderDetailInfo(Map<String, Object> map);
	
	MxOperatorReportDto getMxCheckBlackInfo(String loanId);
	
	MXCheckSearchInfo getMxUserSearchInfo(String loanId);
	
	BRDeviceInfo getDeviceInfo(Map<String, Object> map);
	
	public CreditReportMessageDto getDeviceDetailInfo(Map<String,Object> map);
	
	public void save(EdcDeviceDto deviceDto);
	
	public EdcDeviceDto selectByLoanId(String loanId);
	
	public YDUserInfoDto selectYDUserInfoDto(String loanId);
	
	public YDLendBehaviorDto selectYDLendBehaviorDto(String loanId);
	
	public YDDeviceLinkDto selectYDDeviceLinkDto(String loanId);
	
	public EdcZxPersonalNewCredit getZXNewCredit(String loanId);
}
